home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX 6.2 Development Libraries
/
SGI IRIX 6.2 Development Libraries.iso
/
dist
/
complib.idb
/
usr
/
share
/
catman
/
p_man
/
cat3
/
complib
/
fft2d.z
/
fft2d
Wrap
Text File
|
1996-03-14
|
7KB
|
133 lines
ccccfffffffftttt2222dddd,,,,zzzzfffffffftttt2222dddd((((3333FFFF)))) ccccfffffffftttt2222dddd,,,,zzzzfffffffftttt2222dddd((((3333FFFF))))
NNNNAAAAMMMMEEEE
ccccfffffffftttt2222dddd,,,, zzzzfffffffftttt2222dddd ---- 2D Complex-to-Complex Fast Fourier Transform.
SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
_F_o_r_t_r_a_n :
ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ccccfffffffftttt2222dddd(((( ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, aaaarrrrrrrraaaayyyy,,,, llllddddaaaa,,,, ccccooooeeeeffff ))))
iiiinnnntttteeeeggggeeeerrrr ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, llllddddaaaa
ccccoooommmmpppplllleeeexxxx aaaarrrrrrrraaaayyyy((((llllddddaaaa,,,,nnnn2222)))),,,, ccccooooeeeeffff((((((((nnnn1111++++11115555))))++++((((nnnn2222++++11115555))))))))
ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee zzzzfffffffftttt2222dddd(((( ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, aaaarrrrrrrraaaayyyy,,,, llllddddaaaa,,,, ccccooooeeeeffff ))))
iiiinnnntttteeeeggggeeeerrrr ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, llllddddaaaa
ddddoooouuuubbbblllleeee ccccoooommmmpppplllleeeexxxx aaaarrrrrrrraaaayyyy((((llllddddaaaa,,,,nnnn2222)))),,,, ccccooooeeeeffff((((((((nnnn1111++++11115555))))++++((((nnnn2222++++11115555))))))))
_C :
####iiiinnnncccclllluuuuddddeeee <<<<fffffffftttt....hhhh>>>>
iiiinnnntttt ccccfffffffftttt2222dddd (((( iiiinnnntttt ssssiiiiggggnnnn,,,, iiiinnnntttt nnnn1111,,,, iiiinnnntttt nnnn2222,,,, ccccoooommmmpppplllleeeexxxx ****aaaarrrrrrrraaaayyyy,,,,
iiiinnnntttt llllddddaaaa,,,, ccccoooommmmpppplllleeeexxxx ****ccccooooeeeeffff))));;;;
iiiinnnntttt zzzzfffffffftttt2222dddd (((( iiiinnnntttt ssssiiiiggggnnnn,,,, iiiinnnntttt nnnn1111,,,, iiiinnnntttt nnnn2222,,,, zzzzoooommmmpppplllleeeexxxx ****aaaarrrrrrrraaaayyyy,,,,
iiiinnnntttt llllddddaaaa,,,, zzzzoooommmmpppplllleeeexxxx ****ccccooooeeeeffff))));;;;
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ccccfffffffftttt2222dddd and zzzzfffffffftttt2222dddd compute in place the complex Fourier transform of
complex 2D sequence of size N1 x N2. The value F{k,l} of the transform
of the 2D sequence f{i,j} is equal to:
F{k,l} = Sum ( W1^(i*k) * W2^(j*l) * f{i,j} ),
for i =0,...,(N1-1), and j=0,...,(n2-1)
W1 = exp( (Sign*2*sqrt(-1)*PI) / N1 )
W2 = exp( (Sign*2*sqrt(-1)*PI) / N2 )
SSSSttttoooorrrraaaaggggeeee
It is assumed that the (N1 x N2) 2D sequence is stored along dimension
N1. So the index {i+1,j} has an offset of 1 element with respect to
{i,j}, and {i,j+1} an offset of _l_d_a elements with respect to {i,j}.
AAAAllllggggoooorrrriiiitttthhhhmmmm
The complex-to-complex 2D Fourier transform is computed with a row-column
approach.
- First, N2 FFTs complex-to-complex of size N1 are evaluated, stride = 1
and leading_dimension=lda.
- then, N1 FFTs complex-to-complex of size N2 are preformed, stride=lda,
and leading_dimension=1.
PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
SSSSIIIIGGGGNNNN ---- Integer specifying which sign to be used for the expression of W
(see above) - must be either +1 or -1.
Unchanged on exit.
PPPPaaaaggggeeee 1111
ccccfffffffftttt2222dddd,,,,zzzzfffffffftttt2222dddd((((3333FFFF)))) ccccfffffffftttt2222dddd,,,,zzzzfffffffftttt2222dddd((((3333FFFF))))
NNNN1111 ---- Integer, the first dimension size of the 2D sequence.
Unchanged on exit.
NNNN2222 ---- Integer, the second dimension size of the 2D sequence.
Unchanged on exit.
AAAARRRRRRRRAAAAYYYY ---- Array containing the samples of the 2D sequence to be
transformed.
On input, the element {i,j} of the sequence is stored as A(i,j) in
_F_o_r_t_r_a_n , and A[i+j*lda] in _C.
On exit, the array is overwritten by its transform. LLLLDDDDAAAA ---- Integer,
leading dimension: increment between the samples of two consecutive sub-
sequences (e.g between {i,j+1} and {i,j}). llllddddaaaa >>>>==== NNNN1111
Unchanged on exit.
CCCCOOOOEEEEFFFFFFFF ---- Array of at least ( (N+15)+(N2+15) ) elements. On entry it
contains the Sines/Cosines and factorization of N. COEFF needs to be
initialized with a call to cfft2di or zfft2di. Unchanged on exit.
EEEExxxxaaaammmmpppplllleeee ooooffff CCCCaaaalllllllliiiinnnngggg SSSSeeeeqqqquuuueeeennnncccceeee
2D FFT computed for a 64*1024 complex value sequence. The elements of
each sequence are stored with increment (stride) 1, and the offset
between the first element of two succesive sequence (leading dimension)
is 2049.
_F_o_r_t_r_a_n
complex array(0:2049-1,0:64-1), coeff(1024+15 + 64+15)
call cfft2di( 1024, 64, coeff)
call cfft2d( -1, 1024, 64, array, 2049, coeff)
_C
#include <fft.h>
complex array[64*2049], *coeff;
coeff = cfft2di( 1024, 64, NULL);
cfft2d( -1, 1024, 64, array, 2049, coeff);
SSSSEEEEEEEE AAAALLLLSSSSOOOO
fft, cfft2di, zfft2di
PPPPaaaaggggeeee 2222